/*
* My97 DatePicker 4.1
* SITE: http://dp.my97.net
* BLOG: http://my97.cnblogs.com
* MAIL: smallcarrot@163.com
*/
var $dp, WdatePicker; (window.onload=function () {
    if (window.document.readyState != "complete") {
        return;
    }
    var $ = {

        $wdate: true,
        $crossFrame: true,
        $dpPath: "",
        position: {},
        lang: "auto",
        skin: "default",
        dateFmt: "yyyy-MM-dd",
        realDateFmt: "yyyy-MM-dd",
        realTimeFmt: "HH:mm:ss",
        realFullFmt: "%Date %Time",
        minDate: "1900-01-01 00:00:00",
        maxDate: "2099-12-31 23:59:59",
        startDate: "",
        alwaysUseStartDate: false,
        yearOffset: 1911,
        isShowWeek: false,
        highLineWeekDay: true,
        isShowClear: true,
        isShowToday: true,
        isShowOthers: true,
        readOnly: false,
        errDealMode: 0,
        autoPickDate: null,
        qsEnabled: true,

        disabledDates: null,
        disabledDays: null,
        opposite: false,
        onpicking: null,
        onpicked: null,
        onclearing: null,
        oncleared: null,
        eCont: null,
        vel: null,
        errMsg: "",
        quickSel: [],
        has: {}
    };
    WdatePicker = S;
    var V = window,
    N = "document",
    H = "documentElement",
    A = "getElementsByTagName",
    T, _, R, G, a;
    switch (navigator.appName) {
        case "Microsoft Internet Explorer":
            R = true;
            break;
        case "Opera":
            a = true;
            break;
        default:
            G = true;
            break
    }
    T = V;
    if ($.$crossFrame) {
        try {
            while (T.parent[N] != T[N] && T.parent[N][A]("frameset").length == 0) T = T.parent
        } catch (P) { }
    }
    _ = J();
    if ($.$wdate) K(_ + "skin/WdatePicker.css");
    var L;
    if (T.$dp) {
        try {
            T.$dp.$("my97")
        } catch (P) {
            L = P.number == -2146823277 ? true : false
        }
    }
    if (!T.$dp || L) {
        $dp = Q({
            ff: G,
            ie: R,
            opera: a,
            el: null,
            win: V,
            status: L ? 2 : 0,
            defMinDate: $.minDate,
            defMaxDate: $.maxDate,
            $: function ($) {
                return (typeof $ == "string") ? this.win[N].getElementById($) : $
            },
            $D: function ($, _) {
                return this.$DV(this.$($).value, _)
            },
            $DV: function (_, $) {
                if (_ != "") {
                    this.dt = $dp.cal.splitDate(_, $dp.cal.dateFmt);
                    if ($) for (var A in $) {
                        if (this.dt[A] === undefined) this.errMsg = "invalid property:" + A;
                        this.dt[A] += $[A]
                    }
                    if (this.dt.refresh()) return this.dt
                }
                return ""
            },
            show: function () {
                if (this.dd) this.dd.style.display = "block"
            },
            hide: function () {
                if (this.dd) this.dd.style.display = "none"
            },
            attachEvent: C
        });
        if (!L) Z(T,
        function () {
            S(null, true)
        })
    } else $dp = T.$dp;
    if (!V[N].docMD) {
        C(V[N], "onmousedown", B);
        V[N].docMD = true
    }
    if (!T[N].docMD) {
        C(T[N], "onmousedown", B);
        T[N].docMD = true
    }
    C(V, "onunload",
    function () {
        $dp.hide()
    });
    function Q(_) {
        T.$dp = T.$dp || {};
        for (var $ in _) T.$dp[$] = _[$];
        return T.$dp
    }
    function C(A, $, _) {
        if (R) A.attachEvent($, _);
        else {
            var B = $.replace(/on/, "");
            _._ieEmuEventHandler = function ($) {
                return _($)
            };
            A.addEventListener(B, _._ieEmuEventHandler, false)
        }
    }
    function J() {
        var _, A, $ = document.getElementsByTagName("script");
        for (var B = 0; B < $.length; B++) {
            _ = $[B].src.substring(0, $[B].src.toLowerCase().indexOf("wdatepicker.js"));
            A = _.lastIndexOf("/");
            if (A > 0) _ = _.substring(0, A + 1);
            if (_) break
        }
        return _
    }
    function D(F) {
        var E, C;
        if (F.substring(0, 1) != "/" && F.indexOf("://") == -1) {
            E = T.location.href;
            C = location.href;
            if (E.indexOf("?") > -1) E = E.substring(0, E.indexOf("?"));
            if (C.indexOf("?") > -1) C = C.substring(0, C.indexOf("?"));
            var _ = "",
            D = "",
            A = "",
            H, G, B = "";
            for (H = 0; H < Math.max(E.length, C.length); H++) if (E.charAt(H).toLowerCase() != C.charAt(H).toLowerCase()) {
                G = H;
                while (E.charAt(G) != "/") {
                    if (G == 0) break;
                    G -= 1
                }
                _ = E.substring(G + 1, E.length);
                _ = _.substring(0, _.lastIndexOf("/"));
                D = C.substring(G + 1, C.length);
                D = D.substring(0, D.lastIndexOf("/"));
                break
            }
            if (_ != "") for (H = 0; H < _.split("/").length; H++) B += "../";
            if (D != "") B += D + "/";
            F = E.substring(0, E.lastIndexOf("/") + 1) + B + F
        }
        $.$dpPath = F
    }
    function K(C, $, D) {
        var B = V[N],
        E = B[A]("HEAD").item(0),
        _ = B.createElement("link");
        _.href = C;
        _.rel = "stylesheet";
        _.type = "text/css";
        if ($) _.title = $;
        if (D) _.charset = D;
        E.appendChild(_)
    }
    function X($, _) {
        C($, "onload", _)
    }
    function Z(_, $) {
        var B = _.document,
        D = false;
        F();
        if ((/WebKit|KHTML|MSIE/i).test(navigator.userAgent)) C();
        function E(_) {
            if (!D) {
                D = true;
                A();
                $(_)
            }
        }
        function G($) {
            return typeof B[$] != "undefined"
        }
        function C() {
            if (B.body !== null && B.getElementsByTagName) {
                if (G("fileSize")) {
                    try {
                        B.documentElement.doScroll("left");
                        E("documentready")
                    } catch ($) { }
                }
                if (G("readyState") && (/loaded|complete/).test(B.readyState)) E("readyState")
            }
            if (!D) setTimeout(C, 10)
        }
        function A() {
            if (typeof B.removeEventListener == "function") B.removeEventListener("DOMContentLoaded", E, false)
        }
        function F() {
            if (typeof B.addEventListener == "function") B.addEventListener("DOMContentLoaded", E, false);
            var $ = _.onload;
            _.onload = function (_) {
                if (typeof $ == "function") $();
                E(_ || this.event)
            }
        }
    }
    function E($) {
        $ = $ || T;
        var B = 0,
        _ = 0;
        while ($ != T) {
            var D = $.parent[N][A]("iframe");
            for (var F = 0; F < D.length; F++) {
                try {
                    if (D[F].contentWindow == $) {
                        var E = U(D[F]);
                        B += E.left;
                        _ += E.top;
                        break
                    }
                } catch (C) { }
            }
            $ = $.parent
        }
        return {
            "leftM": B,
            "topM": _
        }
    }
    function U(E) {
        if (R) return E.getBoundingClientRect();
        else {
            var A = {
                ROOT_TAG: /^body|html$/i,
                OP_SCROLL: /^(?:inline|table-row)$/i
            },
            G = null,
            _ = E.offsetTop,
            F = E.offsetLeft,
            D = E.offsetWidth,
            B = E.offsetHeight,
            C = E.offsetParent;
            if (C != E) while (C) {
                F += C.offsetLeft;
                _ += C.offsetTop;
                if (C.tagName.toLowerCase() == "body") G = C.ownerDocument.defaultView;
                C = C.offsetParent
            }
            C = E.parentNode;
            while (C.tagName && !A.ROOT_TAG.test(C.tagName)) {
                if (C.scrollTop || C.scrollLeft) if (!A.OP_SCROLL.test(C.style.display)) if (!a || C.style.overflow !== "visible") {
                    F -= C.scrollLeft;
                    _ -= C.scrollTop
                }
                C = C.parentNode
            }
            var $ = Y(G);
            F -= $.left;
            _ -= $.top;
            D += F;
            B += _;
            return {
                "left": F,
                "top": _,
                "right": D,
                "bottom": B
            }
        }
    }
    function M($) {
        $ = $ || T;
        var _ = $[N];
        _ = _[H] && _[H].clientHeight && _[H].clientHeight <= _.body.clientHeight ? _[H] : _.body;
        return {
            "width": _.clientWidth,
            "height": _.clientHeight
        }
    }
    function Y($) {
        $ = $ || T;
        var B = $[N],
        A = B[H],
        _ = B.body;
        B = (A && A.scrollTop != null && (A.scrollTop > _.scrollLeft || A.scrollLeft > _.scrollLeft)) ? A : _;
        return {
            "top": B.scrollTop,
            "left": B.scrollLeft
        }
    }
    function B(_) {
        src = _ ? (_.srcElement || _.target) : null;
        if ($dp && $dp.dd && $dp.dd.style.display == "block" && src != $dp.el) {
            var A = $dp.el,
            B = $dp.cal,
            $ = $dp.el[$dp.elProp];
            if ($ != null) {
                $dp.$w.hideSel();
                if ($ != "" && !$dp.readOnly) B.date.loadFromDate(B.splitDate($, B.dateFmt));
                if ($ == "" || (B.isDate(B.date) && B.isTime(B.date) && B.checkValid(B.date))) {
                    B.mark(true);
                    if ($ != "") B.update();
                    else B.setRealValue("");
                    $dp.hide()
                } else B.mark(false)
            } else $dp.hide()
        }
    }
    var O = [];
    function W() {
        $dp.status = 2;
        F()
    }
    function F() {
        if (O.length > 0) {
            var $ = O.shift();
            $.el = {
                innerHTML: ""
            };
            $.eCont = $dp.$($.eCont);
            $.autoPickDate = true;
            $.qsEnabled = false;
            I($)
        }
    }
    function S(C, $) {
        $dp.win = V;
        C = C || {};
        if ($) {
            $dp.status = 1;
            I({
                el: {
                    innerHTML: ""
                }
            },
            true)
        } else if (C.eCont) {
            O.push(C);
            if ($dp.status == 2) F()
        } else {
            if ($dp.status == 0) $dp.status = 1;
            else if ($dp.status != 2) return;
            var B, A = _();
            if (A) {
                B = A.srcElement || A.target;
                A.cancelBubble = true
            }
            C.el = $dp.$(C.el || B);
            if (!C.el || C.el && C.el.disabled || (C.el == $dp.el && $dp.dd.style.display != "none" && $dp.dd.style.left != "-1970px")) return;
            I(C)
        }
        function _() {
            if (G) {
                func = _.caller;
                while (func != null) {
                    var $ = func.arguments[0];
                    if ($ && ($ + "").indexOf("Event") >= 0) return $;
                    func = func.caller
                }
                return null
            }
            return event
        }
    }
    function I(G, A) {
        for (var F in $) if (F.substring(0, 1) != "$") $dp[F] = $[F];
        for (F in G) if ($dp[F] === undefined) $dp.errMsg = "invalid property:" + F;
        else $dp[F] = G[F];
        $dp.elProp = $dp.el && $dp.el.nodeName == "INPUT" ? "value" : "innerHTML";
        if ($dp.el[$dp.elProp] == null) return;
        if ($dp.lang == "auto") $dp.lang = R ? navigator.browserLanguage.toLowerCase() : navigator.language.toLowerCase();
        if (!$dp.dd || $dp.eCont || ($dp.lang && $dp.realLang && $dp.realLang.name != $dp.lang)) {
            if ($dp.dd && !$dp.eCont) T[N].body.removeChild($dp.dd);
            if ($.$dpPath == "") D(_);
            var B = "<iframe src=\"" + $.$dpPath + "My97DatePicker.htm\" frameborder=\"0\" border=\"0\" scrolling=\"no\"></iframe>";
            if ($dp.eCont) {
                $dp.eCont.innerHTML = B;
                X($dp.eCont.childNodes[0], W)
            } else {
                $dp.dd = T[N].createElement("DIV");
                $dp.dd.style.cssText = "position:absolute;z-index:19700";
                $dp.dd.innerHTML = B;
                T[N].body.appendChild($dp.dd);
                X($dp.dd.childNodes[0], W);
                if (A) $dp.dd.style.left = $dp.dd.style.top = "-1970px";
                else {
                    $dp.show();
                    C()
                }
            }
        } else if ($dp.cal) {
            $dp.show();
            $dp.cal.init();
            C()
        }
        function C() {
            var F = $dp.position.left,
            B = $dp.position.top,
            G = U($dp.el),
            $ = E(V),
            C = M(T),
            A = Y(T),
            D = $dp.dd.offsetHeight,
            _ = $dp.dd.offsetWidth;
            if (isNaN(B)) {
                if (B == "above" || (B != "under" && (($.topM + G.bottom + D > C.height) && ($.topM + G.top - D > 0)))) B = A.top + $.topM + G.top - D - 3;
                else B = A.top + $.topM + G.bottom;
                B += R ? -1 : 1
            } else B += A.top + $.topM;
            if (isNaN(F)) F = A.left + Math.min($.leftM + G.left, C.width - _ - 5) - (R ? 2 : 0);
            else F += A.left + $.leftM;
            $dp.dd.style.top = B + "px";
            $dp.dd.style.left = F + "px"
        }
    }
})()